home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / pc / WANDR330.ZIP / SRC / JUMP.C < prev    next >
Encoding:
C/C++ Source or Header  |  1997-01-02  |  3.7 KB  |  136 lines

  1. #include "wand_head.h"
  2.  
  3. extern int debug_disp;
  4. extern long dictsize;    /* bjr */
  5. extern FILE *dictfp;    /* bjr */
  6. extern WINDOW *messagewin;
  7.  
  8. void scrn_passwd(num, passwd)    /* reads password num into passwd */
  9. int num;
  10. char *passwd;
  11. {
  12.     long position;
  13.  
  14.     position = PASSWD;
  15.     while (position >= dictsize)
  16.     position -= dictsize;
  17.     fseek(dictfp,position,SEEK_SET);
  18.     while (fgetc(dictfp) != '\n' && !feof(dictfp));
  19.     /* read a word into passwd */
  20.     if (fscanf(dictfp,"%s\n",passwd) == EOF) {
  21.     rewind(dictfp);
  22.     fscanf(dictfp,"%s\n",passwd);
  23.     }
  24. }
  25.  
  26. void showpass(num)
  27. int num;
  28. {
  29.     long position;
  30.     char correct[20];
  31.     char buffer[100];
  32.     char ch;
  33.     wmove(messagewin,0,0);
  34.     scrn_passwd(num,correct);
  35.     sprintf(buffer,"The password to jump to level %d ( using ~ ) is : %s        \n",(num+1),correct);
  36.     waddstr(messagewin,buffer);
  37.     waddstr(messagewin,"PRESS ANY KEY TO REMOVE IT AND CONTINUE                          \n");
  38.     wrefresh(messagewin);
  39.     ch = wgetch(messagewin);
  40.  
  41.     wmove(messagewin,0,0);
  42.     waddstr(messagewin,"                                            \n");
  43.     waddstr(messagewin,"                                              ");
  44.     wrefresh(messagewin);
  45.  
  46. }
  47.  
  48. int jumpscreen(num)
  49. int num;
  50. {
  51.     char word[20], buffer[100], correct[20];
  52.     int  index = 0, input;
  53.     int  scrn;
  54.     wclear(messagewin);
  55.     wmove(messagewin,0,0);
  56.     waddstr(messagewin,"Enter number of desired level:");
  57.     wrefresh(messagewin);
  58.     scrn = getnum();
  59.  
  60.     if (dictsize) {        /* if passwords are enabled */
  61.         wmove(messagewin,0,0); 
  62.     waddstr(messagewin,"Please enter password of screen to jump to:");
  63.     wrefresh(messagewin);
  64.     while (((word[index++] = wgetch(messagewin)) != '\n')
  65.                && (index < 19)) 
  66.         { 
  67.         waddch(messagewin,'*');
  68.         wrefresh(messagewin);
  69.     }
  70.     word[--index]='\0';
  71.         wmove(messagewin,0,0);
  72.     waddstr(messagewin,
  73.          "Validating...                                             \n");
  74.     wrefresh(messagewin);
  75.  
  76.     if (strcmp(word,MASTERPASSWORD) == 0) {
  77.         scrn_passwd(scrn-1,correct);
  78.         sprintf(buffer,"Certainly master, but the correct word is %s.       \n",correct);
  79.             wmove(messagewin,0,0);
  80.         waddstr(messagewin,buffer);
  81.         waddstr(messagewin,"PRESS ANY KEY TO REMOVE IT AND CONTINUE       \n");
  82.         wrefresh(messagewin);
  83.         wgetch(messagewin);
  84.             wmove(messagewin,0,0);
  85.         waddstr(messagewin,"                                          \n");
  86.         waddstr(messagewin,"                                            ");
  87.         wrefresh(messagewin);
  88.         return scrn;
  89.     }
  90.     }
  91.  
  92.     if (scrn <= num) {
  93.     wmove(messagewin,0,0);
  94.     waddstr(messagewin,"No way, Jose! Back-jumping is prohibited!");
  95.     wrefresh(messagewin);
  96.     return num;
  97.     }
  98.  
  99.     if (!dictsize) {    /* if passwords are disabled */
  100.     wmove(messagewin,0,0);
  101.     waddstr(messagewin,"                                                ");
  102.     return scrn;
  103.     }
  104.  
  105.     scrn_passwd(scrn-1,correct);
  106.     if (strcmp(correct,word) == 0) {
  107.     wmove(messagewin,0,0);
  108.     waddstr(messagewin,"Password Validated..... Jumping to desired screen.        ");
  109.     wrefresh(messagewin);
  110.     return scrn;
  111.     }
  112.     wmove(messagewin,0,0);
  113.     waddstr(messagewin,"PASSWORD NOT RECOGNISED!                    ");
  114.     wrefresh(messagewin);
  115. /*
  116.     if (!debug_disp)
  117.     move(16,0);
  118.     else
  119.     move(18,0);
  120.     addstr("                                                          ");
  121. */
  122.     return num;
  123. }
  124.  
  125. int getnum()
  126. {
  127. char ch;
  128. int num = 0;
  129.  
  130.     for (ch = wgetch(messagewin), waddch(messagewin,ch),
  131.               wrefresh(messagewin); ch >= '0' && ch <= '9';
  132.     ch = wgetch(messagewin), waddch(messagewin,ch), wrefresh(messagewin))
  133.     num = num * 10 + ch - '0';
  134.     return num;
  135. }
  136.